package view.eventos;

import java.awt.BorderLayout;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Calendar;

import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import javax.swing.ScrollPaneConstants;
import javax.swing.border.EmptyBorder;

import model.Alumno;
import model.Contacto;
import model.Estado_Evento;
import model.Evento;
import model.PersonalAdministrativo;
import model.comunication.IAlumno;
import model.comunication.IEvento;
import model.utils.Util;
import view.confirmaciones.DialogTypes;
import view.confirmaciones.EventoCreado;
import view.confirmaciones.ViewDialog;

import com.toedter.calendar.JDateChooser;

import java.awt.Toolkit;
import java.awt.Font;

import javax.swing.ImageIcon;

public class CrearEvento extends JDialog {

	private static final long serialVersionUID = 1L;
	private final JPanel contentPanel = new JPanel();
	private JTextField nombreAlumno;
	private JTextArea textMotivo;
	private int idAlumno = 0;
	private Contacto contacto;
	private IAlumno comunicationAlumno;
	private IEvento comunicatinEvento;
	private JDateChooser dateChooser;
	private PersonalAdministrativo personalAdministrativo;

	/**
	 * Launch the application.
	 */
	public static void main(String[] args) {
		try {
			CrearEvento dialog = new CrearEvento(null);
			dialog.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
			dialog.setVisible(true);
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	/**
	 * Create the dialog.
	 */

	/**
	 * Create the dialog.
	 */
	public CrearEvento(PersonalAdministrativo personalAdministrativo) {
		this.personalAdministrativo=personalAdministrativo;
		comunicationAlumno = IAlumno.getInstance();
		comunicatinEvento = IEvento.getInstance();
		inicialize();
	}

	private void inicialize() {
		setIconImage(Toolkit.getDefaultToolkit().getImage(CrearEvento.class.getResource("/Icon_/calendar_64.png")));
		setTitle("Tarea");
		setModal(true);
		setAlwaysOnTop(true);
		setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
		setResizable(false);
		setBounds(600, 400, 250, 400);
		this.setLocationRelativeTo(null);
		getContentPane().setLayout(new BorderLayout());
		contentPanel.setBorder(new EmptyBorder(5, 5, 5, 5));
		getContentPane().add(contentPanel, BorderLayout.CENTER);
		contentPanel.setLayout(null);

		JLabel lblEventoGeneradoPara = new JLabel("Tarea generada para el alumno:");
		lblEventoGeneradoPara.setFont(new Font("Tahoma", Font.BOLD, 11));
		lblEventoGeneradoPara.setBounds(12, 11, 200, 14);
		contentPanel.add(lblEventoGeneradoPara);

		nombreAlumno = new JTextField();
		nombreAlumno.setEditable(false);
		nombreAlumno.setBounds(12, 36, 215, 20);
		contentPanel.add(nombreAlumno);
		nombreAlumno.setColumns(10);

		dateChooser = new JDateChooser();
		dateChooser.setBounds(57, 72, 168, 20);
		contentPanel.add(dateChooser);

		JLabel lblFecha = new JLabel("Fecha:");
		lblFecha.setFont(new Font("Tahoma", Font.BOLD, 11));
		lblFecha.setBounds(12, 73, 46, 20);
		contentPanel.add(lblFecha);

		this.textMotivo = new JTextArea();
		this.textMotivo.setColumns(10);
		this.textMotivo.setLineWrap(true);
		this.textMotivo.setWrapStyleWord(true);

		JScrollPane scrollTextArea = new JScrollPane();
		scrollTextArea.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
		scrollTextArea.setViewportView(this.textMotivo);
		scrollTextArea.setBounds(12, 115, 215, 213);
		contentPanel.add(scrollTextArea);

		JPanel buttonPane = new JPanel();
		buttonPane.setLayout(new FlowLayout(FlowLayout.RIGHT));
		getContentPane().add(buttonPane, BorderLayout.SOUTH);
		JButton okButton = new JButton("OK");
		okButton.setIcon(new ImageIcon(CrearEvento.class.getResource("/Icon_/tick_16.png")));
		okButton.setFont(new Font("Tahoma", Font.BOLD, 11));
		okButton.setActionCommand("OK");
		okButton.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				Calendar fechaActual = Calendar.getInstance();
				Calendar fechaRealizar = dateChooser.getCalendar();
				if (fechaActual.compareTo(fechaRealizar) < 0) {
					Evento eventoGen = comunicatinEvento.getEvento(Estado_Evento.pendiente, fechaActual, fechaRealizar, textMotivo.getText(), personalAdministrativo, contacto, null, null);
					comunicatinEvento.addEvento(eventoGen);
					EventoCreado evento = new EventoCreado();

				} else {
					ViewDialog dialog = new ViewDialog(DialogTypes.Negative, "No se ha podido crear el evento. Por favor, ingrese una fecha superior a la actual.");
				}
				dispose();
			}
		});
		buttonPane.add(okButton);
		getRootPane().setDefaultButton(okButton);
		JButton cancelButton = new JButton("Cancel");
		cancelButton.setIcon(new ImageIcon(CrearEvento.class.getResource("/Icon_/exit.png")));
		cancelButton.setFont(new Font("Tahoma", Font.BOLD, 11));
		cancelButton.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				dispose();
			}
		});
		cancelButton.setActionCommand("Cancel");
		buttonPane.add(cancelButton);
	}

	public void setId(int id, Contacto contacto) {
		this.idAlumno = id;
		this.contacto = contacto;
		Alumno alumno = comunicationAlumno.getAlumno(idAlumno);
		nombreAlumno.setText(Util.obtainName(alumno));
	}
}
